import jieba
txt = open("sanguo.txt", "r", encoding='utf-8').read()
words = jieba.lcut(txt)
counts = {}


for word in words:
    if len(word) == 1:
        continue
    elif word == '孔明' or word == '孔明曰':
        word = '诸葛亮'
    elif word == '关公' or word == '云长':
        word = '关羽'
    elif word == '玄德' or word == '玄德曰':
        word = '刘备'
    else:
        word = word
    counts[word] = counts.get(word, 0) + 1
ex = {'将军', '却说', '丞相', '二人', '不可', '荆州', '不能', '如此', '商议', '如何',
      '主公', '军士', '左右', '军马', '引兵', '次日', '大喜', '天下', '东吴', '于是',
      '今日', '不敢', '魏兵', '陛下', '一人', '都督', '人马', '不知'}
for word in ex:
    del counts[word]

items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)

for i in range(10):
    word, count = items[i]
    print('{0:<10}{1:>5}'.format(word, count))
